package com.ls.fw.data.utils;

import com.ls.fw.data.bean.Table;
import com.ls.fw.data.exception.DataException;


/**
 * 字段名称处理器
 * @author ls
 * 2014年12月5日下午3:14:17
 */
public class IDHander {

	public static final String prefix = "ls";
	
	public static final String joiner = "_";
	
	
	public static String generateValue(final Table table, final String id){
		if(table==null){
			return id;
		}
		return generateValue(table.getSchemaName(), table.getName(), id);
	}
	
	
	
	
	/**
	 * 生成字段名
	 * @author ls
	 * 2014年12月5日下午3:05:07 
	 * @param scheamName
	 * @param tableName
	 * @param Value
	 * @return
	 */
	public static String generateValue(String scheamName, String tableName, final String id){
		return prefix+joiner+check(scheamName)+joiner+check(tableName)+joiner+prefix+joiner+id;
	}
	

	private static String check(String name){
		if(name==null || name.equals("")){
			throw new DataException("名称不能为空！");
		}
		if(name.equals(prefix)){
			throw new DataException("hz为关键字，不能被使用！请更换名称！");
		}
		return name;
	}
	
	/**
	 * 解析字段名称
	 * @author ls
	 * 2014年12月5日下午3:10:57 
	 * @param Value
	 * @param table
	 * @return
	 */
	public static String resloveValue(String value, final Table table){
		if(table == null){
			return value;
		}
		return resloveValue(value, table.getSchemaName(), table.getName());
	}
	
	
	/**
	 * 解析字段名称
	 * @author ls
	 * 2014年12月5日下午3:11:09 
	 * @param Value
	 * @param scheamName
	 * @param tableName
	 * @return
	 */
	public static String resloveValue(String value, String scheamName, String tableName){
		if(!value.startsWith(prefix)){
			return value;
		}
		String prefixStr = prefix+joiner+scheamName+joiner+tableName+joiner+prefix+joiner;
		String str = value.replaceFirst(prefixStr, "");
		return str;
	}
	
	public static String resloveValue(String value){
		if(!value.startsWith(prefix)){
			return value;
		}
	    int beginIndex = value.indexOf(prefix, prefix.length());
	    if(beginIndex>-1){
		    String str = value.substring(beginIndex+prefix.length()+joiner.length());
			return str;
	    }
	    return value;
	}
	
	
	public static void main(String[] args) {
		Table t = new Table("schemaName", "Value");
		String str = IDHander.generateValue(t, "f");
		System.out.println(str);
		System.out.println(IDHander.resloveValue(str, t));
		
		System.out.println(IDHander.resloveValue(str));
		str = "hz_asdfasf";
		System.out.println(IDHander.resloveValue(str));
	}
}
